package com.bzkj.basicinfo.service.yxl;

import com.bzkj.basicinfo.domain.yxl.PdaWarehouseMove;
import com.bzkj.basicinfo.domain.yxl.vo.YxlBillsReportVo;
import com.bzkj.basicinfo.mapper.YxlReportMapper;
import com.bzkj.common.core.domain.AjaxResult;
import com.bzkj.common.core.domain.R;
import com.bzkj.common.core.page.TableDataInfo;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;

import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;

/**
 * @Author：swj
 * @Desc
 * @Date：2025/8/13 10:33
 */
public interface YxlReportService {
    //==============================================首页接口=============================================

    /**
     * 查询前十商品数据
     *
     * @param type 1 当天 2 本周 3 本月
     * @return
     */
    List<YxlBillsReportVo> queryTop10(String type);

    /**
     * 低库存预警
     *
     * @return
     */
    AjaxResult lowInventory(Integer pageNum, Integer pageSize);

    /**
     * 有效期警
     *
     * @return
     */
    AjaxResult expWarning(Integer pageNum, Integer pageSize);

    /**
     * 实时概况
     */
    AjaxResult realTime();

    /**
     * 出入库明细统计
     *
     * @param type        1出库 2入库
     * @param stoId       仓库
     * @param startDate   开始时间
     * @param endDate     结束时间
     * @param drugCD      生产厂家
     * @param drugBatchNo 批号
     * @param drugName    药品名称
     * @param userName    用户
     * @param drugJwh     架位号
     * @return
     */
    AjaxResult queryWarehouseOutInDetail(Integer type, String stoId, String startDate, String endDate, String drugCD,
                                         String drugBatchNo, String drugName, String userName, String drugJwh, Integer pageNum, Integer pageSize);

    /**
     * 出入库明细统计导出
     *
     * @param type        1出库 2入库
     * @param stoId       仓库
     * @param startDate   开始时间
     * @param endDate     结束时间
     * @param drugCD      生产厂家
     * @param drugBatchNo 批号
     * @param drugName    药品名称
     * @param userName    用户
     * @param drugJwh     架位号
     * @return
     */
    AjaxResult exportWarehouseOutInDetail(Integer type, String stoId, String startDate, String endDate, String drugCD,
                                          String drugBatchNo, String drugName, String userName, String drugJwh, String selectedColumns,
                                          HttpServletResponse response);

    /**
     * 查询入库单据
     *
     * @param billsId   单据号
     * @param stoId     仓库
     * @param startDate
     * @param endDate
     * @param billsCd   厂家
     * @param userName  操作人
     * @param isQr 是否确认
     * @param pageNum
     * @param pageSize
     * @return
     */
    AjaxResult queryInBillsList(String billsId, String stoId, String startDate, String endDate, String billsCd,
                                String userName, String isQr,Integer pageNum, Integer pageSize);

    AjaxResult exportInBillsList(String billsId, String stoId, String startDate, String endDate, String billsCd,
                                String userName, String isQr,HttpServletResponse response);

    /**
     * 查询出库单据
     *
     * @param billsId   单据号
     * @param stoId     仓库
     * @param startDate
     * @param endDate
     * @param billsCd   厂家
     * @param userName  操作人
     * @param isQr 是否确认
     * @param pageNum
     * @param pageSize
     * @return
     */
    AjaxResult queryOutBillsList(String billsId, String stoId, String startDate, String endDate, String billsCd,
                                    String userName, String isQr, Integer pageNum, Integer pageSize);

    AjaxResult exportOutBillsList(String billsId, String stoId, String startDate, String endDate, String billsCd,
                                    String userName, String isQr, HttpServletResponse response);

    /**
     * 移库管理接口
     * @param userName 操作人
     * @param spmch 药品名称
     * @param batchCode 批号
     * @return
     */
    List<PdaWarehouseMove> queryWarehouseMoveList(String userName, String spmch, String batchCode,String startDate,String endDate);

    /**
     *入出库单据top
     * @return
     */
    AjaxResult queryInChartInfo();

    AjaxResult queryOutChartInfo();

    /**
     * 往来单位信息 1 本月  2季度（90天） 3 本年
     * @return
     */
    AjaxResult queryCustomer(String type);

    /**
     * 同比环比
     * @param dateRange
     * @return
     */
    AjaxResult queryCustomerMonthAndYear(String dateRange);

    /**
     * 追溯码查询
     * @return
     */
    AjaxResult queryBarCode(String barCode,String orderId,Integer pageNum,Integer pageSize);

    AjaxResult queryBarCodeByParentCode(String parentCode);

    /**
     * 滞销
     * @return
     */
    AjaxResult queryUnsalableDrug(String stoId, String spbh, String startDate,String endDate,Integer pageNum,Integer pageSize);

    /**
     * 畅销
     * @return
     */
    AjaxResult querySalableDrug(String stoId,  String spbh, String startDate,String endDate,Integer pageNum,Integer pageSize);

    /**
     * 导出畅销品
     * @return
     */
    AjaxResult exportSalableDrug(String stoId, String spbh, String startDate,String endDate,HttpServletResponse response);

    /**
     * 导出滞销品
     * @return
     */
    AjaxResult exportUnSalableDrug(String stoId, String spbh, String startDate,String endDate,HttpServletResponse response);
    /**
     * 仓库概况
     * @param stoId
     * @return
     */
    AjaxResult queryAreaByStoId(String stoId);

    AjaxResult queryUnitByAreaId(String stoId,String areaId);

    AjaxResult querySkuByUnitCode(String unitCode);

    /**
     * 首页货位剩余量提醒
     * @return
     */
    AjaxResult queryUnitNum();

    //==============================================大屏接口======================================
    AjaxResult largeScreenBillsInfo();

    /**
     * 低库存预警
     *
     * @return
     */
    AjaxResult largeScreenLowInventory();

    /**
     * 有效期警
     *
     * @return
     */
    AjaxResult largeScreenExpWarning();

    /**
     * 统计货位数量
     * @return
     */
    AjaxResult countUnitNum(String stoId,String type);

    /**
     * 畅销、滞销
     * @return
     */
    AjaxResult queryLargeSalable(String stoId, String drugName, String spbh, String startDate,String endDate);

    AjaxResult wmsUserKpi(String dataType, String sType);


}
